1. Technical Field
The present invention relates in general to audio facilities in data processing system and in particular to audio wavetable handling in data processing systems. Still more particularly, the present invention relates to a method of paging audio wavetables into a system memory for a data processing system.
2. Description of the Related Art
Audio capabilities for data processing systems can be supported in a variety of manners. One method employs musical instrument digital interface (MIDI) wavetable synthesis, which is also employed in electronic musical instruments. In the wavetable technique, pulse code modulation (PCM) or compressed data of actual sounds are used to represent the desired waveform or the tone to be generated. This digitized recording, or "sample", of the desired tone may then be stored in a digital format in a memory, typically referred to as a wavetable. To recreate the tone, the digital waveform is retrieved from memory and converted from a digital format to an analog signal to generate the desired sound.
A PCM wavetable algorithm plays a recreated sound into a filter whose output can be modulated in a mixer according to a volume input. To conserve memory, a digitized representation of the desired sound may be looped. For such wavetables, the desired sound may then be generated for any length of time by starting at the beginning of the wavetable and, upon reaching the loop, repeatedly looping between the loop start and loop end for the desired period.
Regeneration of the desired tone from the stored digital representation is typically performed by a MIDI synthesizer, a process which controls the filter, mixer, and volume input described above. In the past, MIDI synthesizers in data processing systems employed dedicated hardware, such as an audio adapter or "sound card," or some specialized peripheral. However, wavetable synthesis is increasingly being performed on the data processing system host processor. Several companies already offer software MIDI synthesizer products, while others have announced release plans.
Software wavetable synthesizers typically include at least three modules: an interrupt handler, a timer, and applications calls. Current commercial software wavetable synthesizers generally require a substantial amount of system memory to hold the digitized samples of each sound to be played, currently ranging from 1/2 to 8 megabytes of system memory. Since the system memory holding the digitized samples must be available from within the interrupt handler, such memory is typically "locked," or retained continuously in memory while the software synthesizer is operating.
Locking wavetables into memory, as is done by current wavetable synthesizers, limits the memory resources available for other purposes while the software synthesizer is active. Also, the availability of system memory limits the number of wavetables which may be employed to generate a specific sound, and requires that the wavetables employed be small, low quality wavetables.
It would be desirable, therefore, to provide a mechanism for providing wavetables to a wavetable synthesizer with reduced system memory requirements, even with wavetables of the same quality. It would further be advantageous for the mechanism to permit the synthesizer to utilize higher quality wavetables and to utilize a very large number of wavetables without regard to wavetable size.